permutace
Otázka od: pavel.sl@centrum.cz
3. 9. 2002 20:45
Zdravim,
nevite nekdo, jak by se delal program na vypsani vsech permutaci
x cisel
(jedna se mi o 9 cisel, takze bych delal nerad 9 vnorenych for
cyklu)
Diky za jakoukoliv radu
Pavel
--------------------
Nový vyhledávač pro český internet www.WebFast.cz - prostě najde ...
Odpovedá: Erik Salaj
5. 9. 2002 0:34
> nevite nekdo, jak by se delal program na vypsani vsech permutaci
> x cisel
> (jedna se mi o 9 cisel, takze bych delal nerad 9 vnorenych for
> cyklu)
rekurziou, n je pocet prvkov:
------------------------------------------
program Permut;
{$APPTYPE CONSOLE}
const n = 9;
var p: array [1..n] of Integer;
procedure Vymen(var x, y: Integer);
var temp: Integer;
begin
temp := x; x := y; y := temp;
end;
procedure Vypis;
var i: Integer;
begin
for i := 1 to n do
Write(p[i], ' ');
WriteLn;
end;
procedure Permutacie(od: Integer);
var i: Integer;
begin
if od = n then
Vypis
else
for i := od to n do
begin
Vymen(p[od], p[i]);
Permutacie(od + 1);
Vymen(p[od], p[i]);
end;
end;
procedure Init;
var i: Integer;
begin
for i := 1 to n do
p[i] := i;
end;
begin
Init;
Permutacie(1);
ReadLn;
end.
------------------------------------------
Erik
Odpovedá: Pavel Mattivi
4. 9. 2002 10:33
snad obecne napsanou rekurzivni funkci ?
Pavel Mattivi
Dezadata spol. s r.o.
Mostní 102
757 01, Valašské Meziříčí
tel.: 0651/618 939, tel./fax: 0651/618 933
mobil: 0608 743 824
pmattivi@dezadata.cz
----- Original Message -----
From: <pavel.sl@centrum.cz>
To: <delphi-l@clexpert.cz>
Sent: Tuesday, September 03, 2002 8:37 PM
Subject: permutace
> Zdravim,
> nevite nekdo, jak by se delal program na vypsani vsech permutaci
> x cisel
> (jedna se mi o 9 cisel, takze bych delal nerad 9 vnorenych for
> cyklu)
>
> Diky za jakoukoliv radu
> Pavel
>
> --------------------
> Nový vyhledávač pro český internet www.WebFast.cz - prostě najde ...
>
>
>
Odpovedá: Roman Toda
4. 9. 2002 16:04
Vidim ze ti nikto neodpoveda, tak skusim z hlavy ja. Permutacie generuj v
poli rekurzivne vymenami prvkov. Urcite si to budes vediet upravit a
vyskusat
var
a:array[1..MAX_PERM] of integer;
procedure perm(i:integer);
var j,k:integer;
begin
if i=n then begin
// pole je hotove
SpracujPermutaciu;
end else
for j:=i to n do begin
vymen (i,j);
perm(i+1);
vymen(i,j);
end;
end
begin
for i:=1 to PermutacieCoho do a[i]:=i;
perm(1);
end;
Roman
> -----Original Message-----
> From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On
> Behalf Of pavel.sl@centrum.cz
> Sent: Tuesday, September 03, 2002 8:38 PM
> To: delphi-l@clexpert.cz
> Subject: permutace
>
>
> Zdravim,
> nevite nekdo, jak by se delal program na vypsani vsech permutaci
> x cisel
> (jedna se mi o 9 cisel, takze bych delal nerad 9 vnorenych for
> cyklu)
>
> Diky za jakoukoliv radu
> Pavel
>
> --------------------
> Nový vyhledávač pro český internet www.WebFast.cz - prostě najde ...
>
>
>
>
>
Odpovedá: Käss, Pavel
4. 9. 2002 10:37
http://www.cut-the-knot.com/do_you_know/AllPerm.shtml
> -----Original Message-----
> nevite nekdo, jak by se delal program na vypsani vsech permutaci
> x cisel
> (jedna se mi o 9 cisel, takze bych delal nerad 9 vnorenych for
> cyklu)
>
Odpovedá: Erik Salaj
4. 9. 2002 23:12
> http://www.cut-the-knot.com/do_you_know/AllPerm.shtml
znacne neprehladny algoritmus a k tomu este zhruba 4-krat
pomalsi ako ten klasicky jednoduchy rekurzivny algoritmus
Erik